﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics.Contracts;
using BE.EBC;

namespace BE.Web.Betfair.Interface
{
    [ContractClassFor(typeof(IBetfairAdapter))]
    abstract class BetfairAdapterCC : IBetfairAdapter
    {
        #region IBetfairAdapter Members

        Session IBetfairAdapter.Login(Common.User.Credentials credentials, BetfairProduct product)
        {
            Contract.Requires<ArgumentException>(credentials != null);
            Contract.Requires<ArgumentNullException>(product != null);
            throw new NotImplementedException();
        }

        void IBetfairAdapter.Logout(Session session)
        {
            Contract.Requires<ArgumentException>(session != null);
            throw new NotImplementedException();
        }

        System.Collections.ObjectModel.ReadOnlyCollection<Entities.BetMarket> IBetfairAdapter.GetAllMarkets(Session session)
        {
            Contract.Requires<ArgumentException>(session != null);
            throw new NotImplementedException();
        }

        System.Collections.ObjectModel.ReadOnlyCollection<Entities.BetEventType> IBetfairAdapter.GetAllEventTypes(Session session)
        {
            Contract.Requires<ArgumentException>(session != null);
            throw new NotImplementedException();
        }

        void IBetfairAdapter.KeepAlive(Session session)
        {
            Contract.Requires<ArgumentException>(session != null);
            throw new NotImplementedException();
        }

        void IBetfairAdapter.GetEventsOfType(Requests.BetEventByTypeRequest eventType)
        {
            Contract.Requires<ArgumentNullException>(eventType != null);
            throw new NotImplementedException();
        }

        void IBetfairAdapter.GetMarketsOfEvent(Requests.EventMarketsRequest request)
        {
            Contract.Requires<ArgumentNullException>(request != null);
            throw new NotImplementedException();
        }



        void IBetfairAdapter.AddMarketsAndSubEvents(Requests.BetEventByParentEventRequest request)
        {
            Contract.Requires<ArgumentNullException>(request != null);
            throw new NotImplementedException();
        }

        #endregion

        #region IBetfairAdapter Members


        void IBetfairAdapter.GetUserFund(Requests.UserFundsRequest request)
        {
            Contract.Requires<ArgumentNullException>(request != null);
        }

        #endregion

        #region IBetfairAdapter Members


        event Action<object, string, EBCTraceLevel> IBetfairAdapter.Out_Trace
        {
            add { throw new NotImplementedException(); }
            remove { throw new NotImplementedException(); }
        }

        #endregion

        #region IBetfairAdapter Members


        void IBetfairAdapter.GetBetsOfMarket(Requests.BetsByMarketRequest request)
        {
            Contract.Requires<ArgumentNullException>(request != null);
        }

        #endregion

        #region IBetfairAdapter Members


        void IBetfairAdapter.GetMarketPrices(Requests.MarketPriceRequest request)
        {
            Contract.Requires<ArgumentNullException>(request != null);
            throw new NotImplementedException();
        }

        #endregion
    }
}
